package com.generic;

import java.util.ArrayList;
import java.util.List;

/**
 * @author LingLed
 * @version 1.0
 */
public class GenericExtends {
    public static void main(String[] args) {
        //泛型不具备继承性
//        ArrayList<Object> arrayList = new ArrayList<String>();
        ArrayList arrayList = new ArrayList();
        ArrayList<String> arrayList1 = new ArrayList();
        ArrayList<AA> arrayList2 = new ArrayList();
        ArrayList<BB> arrayList3 = new ArrayList();
        //<?>支持任意泛型类型
        //<? extends AA>支持泛型类型为AA及他的的子类
        //<? super AA>支持泛型类型为AA及他的的父类
        AA.show(arrayList);
        AA.show(arrayList1);
        AA.show(arrayList2);
        AA.show(arrayList3);

        AA.show1(arrayList);
//        AA.show1(arrayList1);//String类型,不是AA
        AA.show1(arrayList2);
        AA.show1(arrayList3);

        AA.show2(arrayList);
//        AA.show2(arrayList1);//String类型,不是AA父类
        AA.show2(arrayList2);
//        AA.show2(arrayList3);//BB类型,不是AA父类


    }
}

class AA{
    public static void show(List<?> l){}
    public static void show1(List<? extends AA> l){}
    public static void show2(List<? super AA> l){}
}

class BB extends AA{}